<?php

/**
 * グローバルナビ共通Utilクラス
 */
class Apm_Util_GlobalNavi_Common {

	/**
	 * 画面遷移判定
	 */
	public static function transitionJudge($searchKbn)
	{
		if (empty($searchKbn)) return;
		
		$instance = null;
		
		switch ($searchKbn)
		{
			// 住所
			case Apm_Config_Search::SRHKBN_JYUSYO :
				$instance = new Apm_Util_GlobalNavi_Jyusyo();
				break;
			// 沿線・駅
			case Apm_Config_Search::SRHKBN_ENSENEKI :
				$instance = new Apm_Util_GlobalNavi_Enseneki();
				break;
			// 地図
			case Apm_Config_Search::SRHKBN_CHIZU :
				$instance = new Apm_Util_GlobalNavi_Chizu();
				break;
			// 路線図
			case Apm_Config_Search::SRHKBN_ROSENZU :
				$instance = new Apm_Util_GlobalNavi_Rosenzu();
				break;
			// 店舗
			case Apm_Config_Search::SRHKBN_TENPO :
				$instance = new Apm_Util_GlobalNavi_Shop();
				break;
			// 物件リクエスト
			case Apm_Config_Search::SRHKBN_BUKENREQUEST :
				// TODO 未実装
				$instance = null;
				break;
			// 住みたい駅
			case Apm_Config_Search::SRHKBN_SUMITAIEKI :
				// TODO 未実装
				$instance = null;
				break;
			// 通勤・通学時間
			case Apm_Config_Search::SRHKBN_TUKINTUGAKU :
				// TODO 未実装
				$instance = null;
				break;
		}
		
		if (is_null($instance) == false)
		{
			return $instance->transitionJudge();
		}
	}
	
	/**
	 * グローバルナビの検索導線の場合、セッションセット
	 *
	 */
	public static function setSessionParameters($params)
	{
		//*****basic項目を詰めなおす*******************
		$params['Basic'] = array();
		//----賃料--------
		//下限、上限
		if (!empty($params['tinryo1']) && !empty($params['tinryo2']))
		{
			$params['Basic']['tinryo1'] = $params['tinryo1'];
			$params['Basic']['tinryo2'] = $params['tinryo2'];
		}
		//管理費・共益費込み
		if (!empty($params['tinryo_jouken2']) && ($params['tinryo_jouken2']) == "on")
		{
			$params['Basic']['tinryo_jouken2'] = $params['tinryo_jouken2'];
		}
		//駐車場代込み
		if (!empty($params['tyusyajyo_komi']) && ($params['tyusyajyo_komi']) == "on")
		{
			$params['Basic']['tyusyajyo_komi'] = $params['tyusyajyo_komi'];
		}
		//通常・めやす賃料
		if (!empty($params['meyasu_tinryo']) && ($params['meyasu_tinryo']) == "normal" || ($params['meyasu_tinryo']) == "meyasu")
		{
			$params['Basic']['meyasu_tinryo'] = $params['meyasu_tinryo'];
		}
		//フリーレント
		if (!empty($params['freerent']) && ($params['freerent']) == "on")
		{
			$params['Basic']['freerent'] = $params['freerent'];
		}
		//敷金・礼金０
		if (!empty($params['shikireizero']) && ($params['shikireizero']) == "on")
		{
			$params['Basic']['shikireizero'] = $params['shikireizero'];
		}
		//敷金なし
		if (!empty($params['shikikin_nashi']) && ($params['shikikin_nashi']) == "on")
		{
			$params['Basic']['shikikin_nashi'] = $params['shikikin_nashi'];
		}
		//礼金なし
		if (!empty($params['reikin_nashi']) && ($params['reikin_nashi']) == "on")
		{
			$params['Basic']['reikin_nashi'] = $params['reikin_nashi'];
		}
		//仲介手数料
		if (!empty($params['shataku_koujyu']) && ($params['shataku_koujyu']) == "on")
		{
			$params['Basic']['shataku_koujyu'] = $params['shataku_koujyu'];
		}
		//部屋割り
		if (!empty($params['heyawari']) && ($params['heyawari']) == "on")
		{
			$params['Basic']['heyawari'] = $params['heyawari'];
		}

		//----初期費用----------
		if (!empty($params['syokihiyo']) )
		{
			$params['Basic']['syokihiyo'] = $params['syokihiyo'];
		}
		//----建物種別-----------
		//賃貸アパート
		if (!empty($params['syubetu1']) && ($params['syubetu1']) == "on")
		{
			$params['Basic']['syubetu1'] = $params['syubetu1'];
		}
		//賃貸マンション
		if (!empty($params['syubetu2']) && ($params['syubetu2']) == "on")
		{
			$params['Basic']['syubetu2'] = $params['syubetu2'];
		}
		//賃貸一戸建て・借家
		if (!empty($params['syubetu3']) && ($params['syubetu3']) == "on")
		{
			$params['Basic']['syubetu3'] = $params['syubetu3'];
		}
		//貸店舗・賃貸事務所
		if (!empty($params['syubetu4']) && ($params['syubetu4']) == "on")
		{
			$params['Basic']['syubetu4'] = $params['syubetu4'];
		}
		//駐車場
		if (!empty($params['syubetu5']) && ($params['syubetu5']) == "on")
		{
			$params['Basic']['syubetu5'] = $params['syubetu5'];
		}
		//----駅徒歩-----------
		//
		if (!empty($params['ekitoho']) )
		{
			$params['Basic']['ekitoho'] = $params['ekitoho'];
		}
		//バス利用
		if (!empty($params['bas_riyou']) && ($params['bas_riyou']) == "on")
		{
			$params['Basic']['bas_riyou'] = $params['bas_riyou'];
		}
		//----専有面積------------
		//下限・上限
		if (!empty($params['senyu1']) && !empty($params['senyu2']))
		{
			$params['Basic']['senyu1'] = $params['senyu1'];
			$params['Basic']['senyu2'] = $params['senyu2'];
		}
		//----間取り--------------
		//ワンルーム
		if (!empty($params['madori10']) && ($params['madori10']) == "on")
		{
			$params['Basic']['madori10'] = $params['madori10'];
		}
		//1K
		if (!empty($params['madori11']) && ($params['madori11']) == "on")
		{
			$params['Basic']['madori11'] = $params['madori11'];
		}
		//1DK(+S)
		if (!empty($params['madori12']) && ($params['madori12']) == "on")
		{
			$params['Basic']['madori12'] = $params['madori12'];
		}
		//1LDK(+S)
		if (!empty($params['madori14']) && ($params['madori14']) == "on")
		{
			$params['Basic']['madori14'] = $params['madori14'];
		}
		//2K
		if (!empty($params['madori21']) && ($params['madori21']) == "on")
		{
			$params['Basic']['madori21'] = $params['madori21'];
		}
		//2DK(+S)
		if (!empty($params['madori22']) && ($params['madori22']) == "on")
		{
			$params['Basic']['madori22'] = $params['madori22'];
		}
		//2LDK(+S)
		if (!empty($params['madori24']) && ($params['madori24']) == "on")
		{
			$params['Basic']['madori24'] = $params['madori24'];
		}
		//3K
		if (!empty($params['madori31']) && ($params['madori31']) == "on")
		{
			$params['Basic']['madori31'] = $params['madori31'];
		}
		//3DK(+S)
		if (!empty($params['madori32']) && ($params['madori32']) == "on")
		{
			$params['Basic']['madori32'] = $params['madori32'];
		}
		//3LDK(+S)
		if (!empty($params['madori34']) && ($params['madori34']) == "on")
		{
			$params['Basic']['madori34'] = $params['madori34'];
		}
		//4K
		if (!empty($params['madori41']) && ($params['madori41']) == "on")
		{
			$params['Basic']['madori41'] = $params['madori41'];
		}
		//4DK(+S)
		if (!empty($params['madori42']) && ($params['madori42']) == "on")
		{
			$params['Basic']['madori42'] = $params['madori42'];
		}
		//4LDK(+S)
		if (!empty($params['madori44']) && ($params['madori44']) == "on")
		{
			$params['Basic']['madori44'] = $params['madori44'];
		}
		//5K～
		if (!empty($params['madori51']) && ($params['madori51']) == "on")
		{
			$params['Basic']['madori51'] = $params['madori51'];
		}
		//----築年数---------------
		if (!empty($params['built']))
		{
			$params['Basic']['built'] = $params['built'];
		}
		//----情報の新しさ----------
		if (!empty($params['jyohou']))
		{
			$params['Basic']['jyohou'] = $params['jyohou'];
		}
		//----画像------------------
		//内装写真あり
		if (!empty($params['kodawari1']))
		{
			$params['Basic']['kodawari1'] = $params['kodawari1'];
		}
		//パノラマ画像あり
		if (!empty($params['kodawari2']))
		{
			$params['Basic']['kodawari2'] = $params['kodawari2'];
		}
		//end//*****basic項目を詰めなおす*******************

		//セッションにセットする
		if ($params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUSYO || $params['SrhKbn'] == Apm_Config_Search::SRHKBN_ENSENEKI ||
			$params['SrhKbn'] == Apm_Config_Search::SRHKBN_CHIZU  || $params['SrhKbn'] == Apm_Config_Search::SRHKBN_ROSENZU  ||
			$params['SrhKbn'] == Apm_Config_Search::SRHKBN_JYUKYOKEITAI || $params['SrhKbn'] == Apm_Config_Search::SRHKBN_KODAWARI ) 
		{
		
			//検索区分
			if (!empty($params['SrhKbn']) )
			{
				Apm_Session_GlobalNavi::setSearchType($params['SrhKbn']);
			}
			//都道府県コード
			if (!empty($params['PrefCd']) )
			{
				Apm_Session_GlobalNavi::setPrefCdList($params['PrefCd']);
			}
			//市区町村コード
			if (!empty($params['CityCd']) )
			{
				Apm_Session_GlobalNavi::setCityCdList($params['CityCd']);
			}
			//町コード
			if (!empty($params['TownCd']) )
			{
				Apm_Session_GlobalNavi::setTownCdList($params['TownCd']);
			}
			//沿線コード
			if (!empty($params['RailCd']) )
			{
				Apm_Session_GlobalNavi::setRailCdList($params['RailCd']);
			}
			//駅コード
			if (!empty($params['StCd']) )
			{
				Apm_Session_GlobalNavi::setStCdList($params['StCd']);
			}
			//基本条件項目
			if (!empty($params['Basic']) )
			{
				Apm_Session_GlobalNavi::setBasicList($params['Basic']);
			}
			//都道府県コード状態
			if (!empty($params['prefcd_condition']))
			{
				Apm_Session_GlobalNavi::setPrefCdCondition($params['prefcd_condition']);
			}
			//最初に選択した都道府県コード
			if (count($params['PrefCd']) == 1)
			{
				Apm_Session_GlobalNavi::setFirstCheck($params['PrefCd'][0]);
			}
			else if (!empty($params['first_check']))
			{
				Apm_Session_GlobalNavi::setFirstCheck($params['first_check']);
			}
		}

	}
	/**
	 * 基本項目をグローバルナビ遷移後へ引継ぎ
	 */	
	public static function setBasicParams($basiclist)
	{
		$params = array();
	
		//下限、上限
		if (!empty($basiclist['tinryo1']) && !empty($basiclist['tinryo2']))
		{
			$params['tinryo1'] = $basiclist['tinryo1'];
			$params['tinryo2'] = $basiclist['tinryo2'];
		}
		//管理費・共益費込み
		if (!empty($basiclist['tinryo_jouken2']) && ($basiclist['tinryo_jouken2']) == "on")
		{
			$params['tinryo_jouken2'] = $basiclist['tinryo_jouken2'];
		}
		//駐車場代込み
		if (!empty($basiclist['tyusyajyo_komi']) && ($basiclist['tyusyajyo_komi']) == "on")
		{
			$params['tyusyajyo_komi'] = $basiclist['tyusyajyo_komi'];
		}
		//通常・めやす賃料
		if (!empty($basiclist['meyasu_tinryo']) && ($basiclist['meyasu_tinryo']) == "normal" || ($basiclist['meyasu_tinryo']) == "meyasu")
		{
			$params['meyasu_tinryo'] = $basiclist['meyasu_tinryo'];
		}
		//フリーレント
		if (!empty($basiclist['freerent']) && ($basiclist['freerent']) == "on")
		{
			$params['freerent'] = $basiclist['freerent'];
		}
		//敷金・礼金０
		if (!empty($basiclist['shikireizero']) && ($basiclist['shikireizero']) == "on")
		{
			$params['shikireizero'] = $basiclist['shikireizero'];
		}
		//敷金なし
		if (!empty($basiclist['shikikin_nashi']) && ($basiclist['shikikin_nashi']) == "on")
		{
			$params['shikikin_nashi'] = $basiclist['shikikin_nashi'];
		}
		//礼金なし
		if (!empty($basiclist['reikin_nashi']) && ($basiclist['reikin_nashi']) == "on")
		{
			$params['reikin_nashi'] = $basiclist['reikin_nashi'];
		}
		//仲介手数料
		if (!empty($basiclist['shataku_koujyu']) && ($basiclist['shataku_koujyu']) == "on")
		{
			$params['shataku_koujyu'] = $basiclist['shataku_koujyu'];
		}
		//部屋割り
		if (!empty($basiclist['heyawari']) && ($basiclist['heyawari']) == "on")
		{
			$params['heyawari'] = $basiclist['heyawari'];
		}

		//----初期費用----------
		if (!empty($basiclist['syokihiyo']) )
		{
			$params['syokihiyo'] = $basiclist['syokihiyo'];
		}
		//----建物種別-----------
		//賃貸アパート
		if (!empty($basiclist['syubetu1']) && ($basiclist['syubetu1']) == "on")
		{
			$params['syubetu1'] = $basiclist['syubetu1'];
		}
		//賃貸マンション
		if (!empty($basiclist['syubetu2']) && ($basiclist['syubetu2']) == "on")
		{
			$params['syubetu2'] = $basiclist['syubetu2'];
		}
		//賃貸一戸建て・借家
		if (!empty($basiclist['syubetu3']) && ($basiclist['syubetu3']) == "on")
		{
			$params['syubetu3'] = $basiclist['syubetu3'];
		}
		//貸店舗・賃貸事務所
		if (!empty($basiclist['syubetu4']) && ($basiclist['syubetu4']) == "on")
		{
			$params['syubetu4'] = $basiclist['syubetu4'];
		}
		//駐車場
		if (!empty($basiclist['syubetu5']) && ($basiclist['syubetu5']) == "on")
		{
			$params['syubetu5'] = $basiclist['syubetu5'];
		}
		//----駅徒歩-----------
		//
		if (!empty($basiclist['ekitoho']) )
		{
			$params['ekitoho'] = $basiclist['ekitoho'];
		}
		//バス利用
		if (!empty($basiclist['bas_riyou']) && ($basiclist['bas_riyou']) == "on")
		{
			$params['bas_riyou'] = $basiclist['bas_riyou'];
		}
		//----専有面積------------
		//下限・上限
		if (!empty($basiclist['senyu1']) && !empty($basiclist['senyu2']))
		{
			$params['senyu1'] = $basiclist['senyu1'];
			$params['senyu2'] = $basiclist['senyu2'];
		}
		//----間取り--------------
		//ワンルーム
		if (!empty($basiclist['madori10']) && ($basiclist['madori10']) == "on")
		{
			$params['madori10'] = $basiclist['madori10'];
		}
		//1K
		if (!empty($basiclist['madori11']) && ($basiclist['madori11']) == "on")
		{
			$params['madori11'] = $basiclist['madori11'];
		}
		//1DK(+S)
		if (!empty($basiclist['madori12']) && ($basiclist['madori12']) == "on")
		{
			$params['madori12'] = $basiclist['madori12'];
		}
		//1LDK(+S)
		if (!empty($basiclist['madori14']) && ($basiclist['madori14']) == "on")
		{
			$params['madori14'] = $basiclist['madori14'];
		}
		//2K
		if (!empty($basiclist['madori21']) && ($basiclist['madori21']) == "on")
		{
			$params['madori21'] = $basiclist['madori21'];
		}
		//2DK(+S)
		if (!empty($basiclist['madori22']) && ($basiclist['madori22']) == "on")
		{
			$params['madori22'] = $basiclist['madori22'];
		}
		//2LDK(+S)
		if (!empty($basiclist['madori24']) && ($basiclist['madori24']) == "on")
		{
			$params['madori24'] = $basiclist['madori24'];
		}
		//3K
		if (!empty($basiclist['madori31']) && ($basiclist['madori31']) == "on")
		{
			$params['madori31'] = $basiclist['madori31'];
		}
		//3DK(+S)
		if (!empty($basiclist['madori32']) && ($basiclist['madori32']) == "on")
		{
			$params['madori32'] = $basiclist['madori32'];
		}
		//3LDK(+S)
		if (!empty($basiclist['madori34']) && ($basiclist['madori34']) == "on")
		{
			$params['madori34'] = $basiclist['madori34'];
		}
		//4K
		if (!empty($basiclist['madori41']) && ($basiclist['madori41']) == "on")
		{
			$params['madori41'] = $basiclist['madori41'];
		}
		//4DK(+S)
		if (!empty($basiclist['madori42']) && ($basiclist['madori42']) == "on")
		{
			$params['madori42'] = $basiclist['madori42'];
		}
		//4LDK(+S)
		if (!empty($basiclist['madori44']) && ($basiclist['madori44']) == "on")
		{
			$params['madori44'] = $basiclist['madori44'];
		}
		//5K～
		if (!empty($basiclist['madori51']) && ($basiclist['madori51']) == "on")
		{
			$params['madori51'] = $basiclist['madori51'];
		}
		//----築年数---------------
		if (!empty($basiclist['built']))
		{
			$params['built'] = $basiclist['built'];
		}
		//----情報の新しさ----------
		if (!empty($basiclist['jyohou']))
		{
			$params['jyohou'] = $basiclist['jyohou'];
		}
		//----画像------------------
		//内装写真あり
		if (!empty($basiclist['kodawari1']))
		{
			$params['kodawari1'] = $basiclist['kodawari1'];
		}
		//パノラマ画像あり
		if (!empty($basiclist['kodawari2']))
		{
			$params['kodawari2'] = $basiclist['kodawari2'];
		}
		
		return $params;
	}

	/**
	 * グローバルナビの検索導線の場合、セッションセット（店舗用）
	 *
	 */
	public static function setTenpoSessionParameters($params)
	{
		//検索区分
		Apm_Session_GlobalNavi::setSearchType(Apm_Config_Search::SRHKBN_TENPO);
		//都道府県コード
		if (!empty($params['PrefCd']) )
		{
			Apm_Session_GlobalNavi::setPrefCdList($params['PrefCd']);
		}
		//市区町村コード
		if (!empty($params['CityCd']) )
		{
			Apm_Session_GlobalNavi::setCityCdList($params['CityCd']);
		}
		//沿線コード
		if (!empty($params['RailCd']) )
		{
			Apm_Session_GlobalNavi::setRailCdList($params['RailCd']);
		}
		//最初に選択した都道府県コード
		if (!empty($params['first_check']))
		{
			Apm_Session_GlobalNavi::setFirstCheck($params['first_check']);
		}
		else if (count($params['PrefCd']) == 1)
		{
			Apm_Session_GlobalNavi::setFirstCheck($params['PrefCd'][0]);
		}
	}

	/**
	 * 都道府県の対応リストチェック
	 *
	 */
	public static function checkPrefCdSelectList(&$prefCd, $firstCheck)
	{
		// 都道府県CDが存在しなければNG
		if (empty($prefCd)) return;
		// 初期選択CDが存在しない場合、配列を空にして返す
		if (empty($firstCheck)) { $prefCd = array(); return; }

		// 選択リストを取得
		$selectPrefList = Apm_Config_Search::$TODOUFUKEN_SELECT_LIST[$firstCheck];
		// 選択リストに存在する都道府県のみを抽出
		$checkPrefCd   = array();
		$checkPrefCd[] = $firstCheck;
		for($i=0; $i<count($prefCd); $i++) {
			if (in_array($prefCd[$i], $selectPrefList)) {
				$checkPrefCd[] = $prefCd[$i];
			}
		}
		// 都道府県CDを更新
		$prefCd = $checkPrefCd;
	}

	/**
	 * 市区町村の対応リストチェック
	 *
	 */
	public static function checkCityCdSelectList(&$cityCd, $prefCd)
	{
		// 市区町村CDが存在しなければNG
		if (empty($cityCd)) return;
		// 都道府県CDが存在しない場合、配列を空にして返す
		if (empty($prefCd)) { $cityCd = array(); return; }

		// 存在しない都道府県の市区町村を削除する
		$checkCityCd   = array();
		for($i=0; $i<count($cityCd); $i++) {
			if (in_array(substr($cityCd[$i],0,2), $prefCd)) {
				$checkCityCd[] = $cityCd[$i];
			}
		}
		// 市区町村CDを更新
		$cityCd = $checkCityCd;
	}

	/**
	 * 沿線の対応リストチェック
	 *
	 */
	public static function checkRailCdSelectList(&$railCd, $prefCd)
	{
		// 市区町村CDが存在しなければNG
		if (empty($railCd)) return;
		// 都道府県CDが存在しない場合、配列を空にして返す
		if (empty($prefCd)) { $railCd = array(); return; }

		// 存在しない都道府県の市区町村を削除する
		$checkRailCd   = array();
		for($i=0; $i<count($railCd); $i++) {
			if (in_array(substr($railCd[$i],0,2), $prefCd)) {
				$checkRailCd[] = $railCd[$i];
			}
		}
		// 市区町村CDを更新
		$railCd = $checkRailCd;
	}

	/**
	 * 沿線CDの更新（店舗からの場合、沿線CDの頭に都道府県CDが付いているのを削除）
	 */
	public static function updRailCdFromTenpoList(&$railCd)
	{
		// 市区町村CDが存在しなければ何もしない
		if (empty($railCd)) return;
		
		for($i=0; $i<count($railCd); $i++) {
			if (strlen($railCd[$i]) > 4) {
				$railCd[$i] = substr($railCd[$i], 2);
			}
		}
	}

	/**
	 * グローバルナビ以外の検索導線の場合、セッションクリア
	 *
	 */
	public static function deleteSessionValue($i, $j)
	{
		if( !( $i == 'search' && $j == 'ensenekisearch') &&
			!( $i == 'search' && $j == 'jyusyosearch')   &&
			!( $i == 'search' && $j == 'chizusearch')    &&
			!( $i == 'search' && $j == 'rosenzusearch')  &&
			!( $i == 'shop') )
		{
			//セッションクリア
			Apm_Session_GlobalNavi::clear();
		}
	}

	/**
	 * 静的URL遷移後の一覧画面に基本条件を引き継ぐ
	 */
	public static function setBasicParamsForRstobi(&$params, $updFlg=true)
	{
		// セッションから基本条件を取得
		$session_params = self::setBasicParams(Apm_Session_GlobalNavi::getBasicList());
		
		foreach ($session_params as $key => $val)
		{
			if (empty($params[$key]) || $updFlg) {
				$params[$key] = $val;
			}
		}
		
	}

}
?>
